﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Collections.ObjectModel;
using PhotoBook.Model.Entities;

namespace PhotoBook
{
    /// <summary>
    /// Interaction logic for CadastroCategoria.xaml
    /// </summary>
    public partial class CadastroCategoria : Window
    {
        private PhotoBook.Model.NHibernate.IRepositorioCategoria _RepositorioCategoria;
        private ObservableCollection<Categoria> _Categorias;

        public ObservableCollection<Categoria> ListaCategorias
        {
            get { return _Categorias; }
        }


        public CadastroCategoria(PhotoBook.Model.NHibernate.IRepositorioCategoria repositorioCategoria)
        {            
            InitializeComponent();
            _RepositorioCategoria = repositorioCategoria;
            _Categorias = new ObservableCollection<Categoria>(_RepositorioCategoria.Select());
            listViewCategoria.ItemsSource = _Categorias;
        }
    
        private void btnSave_Click(object sender, RoutedEventArgs e)
        {
            PhotoBook.Model.Entities.Categoria categoria = new PhotoBook.Model.Entities.Categoria();
            categoria.Descricao = txtDescricao.Text;
            try
            {
                _RepositorioCategoria.Insert(categoria);
                _Categorias.Add(categoria);
                listViewCategoria.ItemsSource = _Categorias;
            }
            catch (Exception ex)
            {
                //TODO Tratar erro.
                MessageBox.Show("Erro ao salvar as informações no banco de dados.", "Erro");
            }
        }

        private void btnDelete_Click(object sender, RoutedEventArgs e)
        {

        }

        private void btnNew_Click(object sender, RoutedEventArgs e)
        {
            txtDescricao.Text = string.Empty;
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                Categoria categoria = new Categoria();
                categoria.Descricao = txtPesquisa.Text;
                _Categorias.Clear();                
                _Categorias = new ObservableCollection<Categoria>(_RepositorioCategoria.BuscaCategoriaByExample(categoria));
                listViewCategoria.ItemsSource = _Categorias;
            }
            catch (Exception)
            {
                MessageBox.Show("Erro ao salvar as informações no banco de dados.", "Erro");
            }
         }
    }
}
